/***
* Feel free to use this code however you wish.
* Created by Alie Tan (www(dot)alietan(dot)com)
*/

#ifndef __XRECTANGLE_H__
#define __XRECTANGLE_H__

#include "Constants.h"
#include "XPoint.h"

class XRectangle
{
	public:
		XRectangle(XPoint *p1, XPoint *p2);
		XRectangle(const XRectangle &);
		XRectangle();
		
		virtual void Draw();
		
		virtual void MoveBy(double x, double y, double z);
		virtual void MoveBy(XPoint *XPoint);
		virtual void Rotate(XPoint *rotationOrigin, double angle, int axis = Z_AXIS);
		virtual void Scale(XPoint *scaleOrigin, double scaleFactor);
		virtual void Shear(double angle);
		virtual void Stretch(XPoint *from, XPoint *to);

		XPoint *GetLeftBottom() const;
		XPoint *GetRightTop() const;

	private:	
		XPoint *leftBottom;
		XPoint *rightTop;
};

#endif	// __XRECTANGLE_H__
